// 导入axios
import axios from 'axios'
//
import { Message } from 'element-ui'
// 导入store
import store from '@/store'
import router from '@/router'
// 创建副本对象
const _axios = axios.create({
  baseURL: process.env.VUE_APP_BASE_API
})

// 请求拦截器
_axios.interceptors.request.use(
  (config) => {
    // 加token有两种情况
    // 1：随便加：不要token接口你加了也可以正常运行
    // 2：不能随便加，不要token接口你加了直接报错
    // 统一设置请求头
    // 第一种
    config.headers.Authorization = `Bearer ${store.state.user.token}`
    // 第二种
    // if (!config.noToken) {
    //   config.headers.Authorization = `Bearer ${store.state.user.token}`
    // }
    return config
  },
  (error) => {
    return Promise.rejeck(error)
  }
)

// 响应拦截器
_axios.interceptors.response.use(
  (res) => {
    // 2开头走上面
    // 如果成功正常返回
    if (res.data.success) {
      return res.data
    } else {
      Message.error(res.data.message)
      return Promise.reject(res.data.message)
    }
  },
  (error) => {
    // 其他开头走下面
    // 权限不够返回登录页面
    if (error.response && error.response.status === 401) {
      // 提示用户
      Message.error(error.response.data.message)
      // 清除token和用户信息
      store.commit('user/logout')
      // 跳转到登录页面
      router.push('/login')
    }

    return Promise.reject(error)
  }
)

// 暴露副本对象
export default _axios
